默克尔树-哈希指针
什么是默克尔树
Merkle树(默克尔树,也称哈希树)是一类基于哈希指针的树。利用Merkle树可以实现信息快速方便的完整性验证
区块链中的每个区块都使用默克尔树来代表区块中所有交易的摘要。默克尔树,也被称为二叉哈希树(binary hash tree),用于高效汇总和验证大数据集的完整性。默克尔树是一个由加密哈希组成的二叉树。名词“树”在计算机科学中用于描述分支的数据结构。作为数据结构,这里的“树”与通常理解的不同,在示意图上它的“根”常常被放在最上面,而“叶子”则在底部,形成一个自上而下的结构。
哈希指针
哈希指针是一种数据结构,它除了指示信息存储的位置之外,带有这些信息的哈希函数值存储在一起。使得哈希指针不仅可以检索信息,也可以检测所指向信息的完整性。 区块链可以看作一类使用哈希指针的链表,这个链表链接一系列的区块,每个区块包含数据以及指向表中前一个区块的指针。在区块链中,前一个区块指针由哈希指针所替换,因此每个区块不仅告诉前一个区块的位置,还提供一个哈希值去验证这个区块所包含的数据是否发生改变。
默克尔树在SPV节点中得到了广泛应用。SPV节点不保存全部交易,也不保存完整区块数据,仅仅存有区块头信息。在不必下载区块中完整交易的情况下,SPV节点利用认证路径或默克尔路径来验证交易是否包含在区块中。